{
 "metadata": {
  "name": "",
  "signature": "sha256:e5323daa57491a69aa604c6a7a9f3079d105baaedf9affd4e26a9273c7facb27"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<small><i>This notebook was put together by [Jake Vanderplas](http://www.vanderplas.com) for PyCon 2015. Source and license info is on [GitHub](https://github.com/jakevdp/sklearn_pycon2015/).</i></small>"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Validation and Model Selection"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In this section, we'll look at *model evaluation* and the tuning of *hyperparameters*, which are parameters that define the model."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from __future__ import print_function, division\n",
      "\n",
      "%matplotlib inline\n",
      "import numpy as np\n",
      "import matplotlib.pyplot as plt\n",
      "\n",
      "# Use seaborn for plotting defaults\n",
      "import seaborn as sns; sns.set()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Validating Models\n",
      "\n",
      "One of the most important pieces of machine learning is **model validation**: that is, checking how well your model fits a given dataset. But there are some pitfalls you need to watch out for.\n",
      "\n",
      "Consider the digits example we've been looking at previously. How might we check how well our model fits the data?"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.datasets import load_digits\n",
      "digits = load_digits()\n",
      "X = digits.data\n",
      "y = digits.target"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's fit a K-neighbors classifier"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.neighbors import KNeighborsClassifier\n",
      "knn = KNeighborsClassifier(n_neighbors=1)\n",
      "knn.fit(X, y)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 3,
       "text": [
        "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
        "           metric_params=None, n_neighbors=1, p=2, weights='uniform')"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now we'll use this classifier to *predict* labels for the data"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "y_pred = knn.predict(X)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Finally, we can check how well our prediction did:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(\"{0} / {1} correct\".format(np.sum(y == y_pred), len(y)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1797 / 1797 correct\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "It seems we have a perfect classifier!\n",
      "\n",
      "**Question: what's wrong with this?**"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Validation Sets\n",
      "\n",
      "Above we made the mistake of testing our data on the same set of data that was used for training. **This is not generally a good idea**. If we optimize our estimator this way, we will tend to **over-fit** the data: that is, we learn the noise.\n",
      "\n",
      "A better way to test a model is to use a hold-out set which doesn't enter the training. We've seen this before using scikit-learn's train/test split utility:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.cross_validation import train_test_split\n",
      "X_train, X_test, y_train, y_test = train_test_split(X, y)\n",
      "X_train.shape, X_test.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 6,
       "text": [
        "((1347, 64), (450, 64))"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now we train on the training data, and validate on the test data:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "knn = KNeighborsClassifier(n_neighbors=1)\n",
      "knn.fit(X_train, y_train)\n",
      "y_pred = knn.predict(X_test)\n",
      "print(\"{0} / {1} correct\".format(np.sum(y_test == y_pred), len(y_test)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "438 / 450 correct\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This gives us a more reliable estimate of how our model is doing.\n",
      "\n",
      "The metric we're using here, comparing the number of matches to the total number of samples, is known as the **accuracy score**, and can be computed using the following routine:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.metrics import accuracy_score\n",
      "accuracy_score(y_test, y_pred)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 8,
       "text": [
        "0.97333333333333338"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This can also be computed directly from the ``model.score`` method:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "knn.score(X_test, y_test)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 9,
       "text": [
        "0.97333333333333338"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Using this, we can ask how this changes as we change the model parameters, in this case the number of neighbors:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "for n_neighbors in [1, 5, 10, 20, 30]:\n",
      "    knn = KNeighborsClassifier(n_neighbors)\n",
      "    knn.fit(X_train, y_train)\n",
      "    print(n_neighbors, knn.score(X_test, y_test))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1 0.973333333333\n",
        "5"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " 0.982222222222\n",
        "10"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " 0.971111111111\n",
        "20"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " 0.955555555556\n",
        "30"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " 0.96\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We see that in this case, a small number of neighbors seems to be the best option."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Cross-Validation\n",
      "\n",
      "One problem with validation sets is that you \"lose\" some of the data. Above, we've only used 3/4 of the data for the training, and used 1/4 for the validation. Another option is to use **2-fold cross-validation**, where we split the sample in half and perform the validation twice:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "X1, X2, y1, y2 = train_test_split(X, y, test_size=0.5, random_state=0)\n",
      "X1.shape, X2.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 11,
       "text": [
        "((898, 64), (899, 64))"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(KNeighborsClassifier(1).fit(X2, y2).score(X1, y1))\n",
      "print(KNeighborsClassifier(1).fit(X1, y1).score(X2, y2))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "0.983296213808\n",
        "0.982202447164"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Thus a two-fold cross-validation gives us two estimates of the score for that parameter.\n",
      "\n",
      "Because this is a bit of a pain to do by hand, scikit-learn has a utility routine to help:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.cross_validation import cross_val_score\n",
      "cv = cross_val_score(KNeighborsClassifier(1), X, y, cv=10)\n",
      "cv.mean()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 13,
       "text": [
        "0.97614938602520218"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### K-fold Cross-Validation\n",
      "\n",
      "Here we've used 2-fold cross-validation. This is just one specialization of $K$-fold cross-validation, where we split the data into $K$ chunks and perform $K$ fits, where each chunk gets a turn as the validation set.\n",
      "We can do this by changing the ``cv`` parameter above. Let's do 10-fold cross-validation:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "cross_val_score(KNeighborsClassifier(1), X, y, cv=10)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 14,
       "text": [
        "array([ 0.93513514,  0.99453552,  0.97237569,  0.98888889,  0.96089385,\n",
        "        0.98882682,  0.99441341,  0.98876404,  0.97175141,  0.96590909])"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This gives us an even better idea of how well our model is doing."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Overfitting, Underfitting and Model Selection"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now that we've gone over the basics of validation, and cross-validation, it's time to go into even more depth regarding model selection.\n",
      "\n",
      "The issues associated with validation and \n",
      "cross-validation are some of the most important\n",
      "aspects of the practice of machine learning.  Selecting the optimal model\n",
      "for your data is vital, and is a piece of the problem that is not often\n",
      "appreciated by machine learning practitioners.\n",
      "\n",
      "Of core importance is the following question:\n",
      "\n",
      "**If our estimator is underperforming, how should we move forward?**\n",
      "\n",
      "- Use simpler or more complicated model?\n",
      "- Add more features to each observed data point?\n",
      "- Add more training samples?\n",
      "\n",
      "The answer is often counter-intuitive.  In particular, **Sometimes using a\n",
      "more complicated model will give _worse_ results.**  Also, **Sometimes adding\n",
      "training data will not improve your results.**  The ability to determine\n",
      "what steps will improve your model is what separates the successful machine\n",
      "learning practitioners from the unsuccessful."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### Illustration of the Bias-Variance Tradeoff\n",
      "\n",
      "For this section, we'll work with a simple 1D regression problem.  This will help us to\n",
      "easily visualize the data and the model, and the results generalize easily to  higher-dimensional\n",
      "datasets.  We'll explore a simple **linear regression** problem.\n",
      "This can be accomplished within scikit-learn with the `sklearn.linear_model` module.\n",
      "\n",
      "We'll create a simple nonlinear function that we'd like to fit"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def test_func(x, err=0.5):\n",
      "    y = 10 - 1. / (x + 0.1)\n",
      "    if err > 0:\n",
      "        y = np.random.normal(y, err)\n",
      "    return y"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 15
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now let's create a realization of this dataset:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def make_data(N=40, error=1.0, random_seed=1):\n",
      "    # randomly sample the data\n",
      "    np.random.seed(1)\n",
      "    X = np.random.random(N)[:, np.newaxis]\n",
      "    y = test_func(X.ravel(), error)\n",
      "    \n",
      "    return X, y"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "X, y = make_data(40, error=1)\n",
      "plt.scatter(X.ravel(), y);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10935d710>"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now say we want to perform a regression on this data.  Let's use the built-in linear regression function to compute a fit:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "X_test = np.linspace(-0.1, 1.1, 500)[:, None]\n",
      "\n",
      "from sklearn.linear_model import LinearRegression\n",
      "from sklearn.metrics import mean_squared_error\n",
      "model = LinearRegression()\n",
      "model.fit(X, y)\n",
      "y_test = model.predict(X_test)\n",
      "\n",
      "plt.scatter(X.ravel(), y)\n",
      "plt.plot(X_test.ravel(), y_test)\n",
      "plt.title(\"mean squared error: {0:.3g}\".format(mean_squared_error(model.predict(X), y)));"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFeCAYAAABU/2zqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4lNdh7/GvVoZF7GLVsHjh2BizSjbCZjNI8RI7Jolj\nxbVbcpM2S5ubJmmcJl1unyZt09w2aeq2SZomJnXaQJ0GO37oJRJghO3ItsS+Hhu8MBIgiVUsGm0z\n94/3FQwChDTM8s7M7/M8fqxllnMYmN+7nPm9WeFwGBEREUmu7GQPQERERBTIIiIinqBAFhER8QAF\nsoiIiAcokEVERDxAgSwiIuIBuckegIgknjGmGHjeWjs12WO5FmPM/wIetdY+cpXfTQf+I+JHOcAM\n4MPW2heMMd8EHgPagFeAL1lr2xIwbJGoKZBFxFOMMSOBvwaeBDZd7TbW2n3AnIj7/D2wyw3jTwAP\nAPOsteeMMd8Fvgl8Je6DF7kBCmRJK8aYJcDfAA3AHcAF4P8A/xswwH9ba7/k3vZh4E+AfPd2f2St\nfd0YMxb4ITAGGAe8D3zMWttsjHkPeBZYBkwC1lhrv3qVcXwW+DTQDgSBT1tr9xtjFgHPAF3A6zjB\nsQSYCjxjrb0zYh7PWGvv7MN4XgdmAl8D6tzHnwTkAauttX8TMaY/BM4Ae3v5M1wAfAsYDISAv7DW\nrjPGrAQ+CQxyH+OnwKfc709ba5cZY/4MqAA6gbeAP7DWNhpjNgMngNuA77tz+Iy19qGrDOExnNfv\nj4Cr/b7neBcCH8HZQwaYC7xorT3nfv8CsAoFsnicziFLOioGvmGtvR1oxAmqB3HeqH/fGDPOGHMr\n8FfAA9bauTjh+UtjzCDgceA1a+0Ca+1NOGH9lPvYYWCwtXYRsAD4vDFmcuSTG2NygO8CH7DW3gX8\nK3CPMWYA8AvgD93nrAEmu4/Zm+uNZ7e1drq19kXgOeAn1tpi4G6gzBjzmDFmNs6GyUJ3TOev9kTG\nmBHAT4AnrbXzgA8B3zfG+N2bTAcWW2vvA7Iivl/m7pneDxRba2cBe3CCsHucJ621d1hr/8la+9I1\nwhhr7Q+ttd/A2ZDpi78Dvh4RwG8CjxhjRrqvxceB8X18LJGkUSBLOnrXWrvT/foQsMla22mtPQG0\nAKOAMpw36U3GmO3Az3D2Wm+21v4j8Lox5kvGmO/j7HkNjnj8FwGstUeAJmBk5JNba7uA54EaY8wz\nOHuTPwHuBILW2pfd2z3n/q5XfRjPKwDGmMHAYuAb7pxqgCJgFnAf8GtrbZN7nx9e4+lK3T+XF93H\nWIezl3wnTqjuigg+enx/P87GQKv7/T8Cy4wxeZHjjCV3b36UtfY/u3/m/rm+ALwMbAZ24BypEPE0\nHbKWdNRz8U7nVW6TDWy01lZ0/8AYMwmoN8b8LVAC/BjnHGYuzt5gt9aIr8M9fgeAtfYpd+FRGfBV\nnEO9X7/KbbuDoufj5EeM63rj6Q7EHPf/pdbaoHvf0e54f4/LN8C7eo7ZlQ3st9bOj3j+iThHGp6M\neK6ez91936we30eOted9Y+FxnEPnFxljhgM/tdZ+0/3+A8DBODy3SExpD1kyURgn2MqNMQbAGHM/\nzp6UDygH/sFa+x9AM06o5lzjsa5gjBltjDmMc4j2e8Cf4ZzjtUCrMeaD7u0eAgrduzUDk4wxhcaY\nLODRiIfs03istS0455O/7D7+MJy90keAKne+E92br7zG8N8AbnXPdWOMmQkcoG+HfH8NfMI97A/O\neftqa233RscVGy4xsBjY2ONndwMvGGNyjTH5wNM4R0BEPE2BLOmo5znZK87Ruqt0fw9YbYzZAXwD\neNhaewH4S+DvjDGv4yxA+gVwS1+f3Fp7HGdV70ZjTB3OIrNPuYeyPwx81RizDfgo0BExnh/iLMqq\nAY5EjLs/43kCmG+M2YUTrj+31v7cWrsHJ5g2GmNqcQ55X+3PpRlngdS33T+XnwFPWWsD7u0j79Pz\n+x8DG4A3jTH7gNnAb/W4PQDGmEeMMeuuMYdrPT7GmO3GmLkRP7oFeK/HHH4NrAd24pzHfhPnnL6I\np2Xp8osiyWOMaQWMtfZwssciIsnVp3PIxpi7gW9Za5e6qzX/EeccVBvw2xELRUSkf7RFLCJAHw5Z\nG2OeBn4EDHB/9A84ny1cCvwSZ8GKiETBWjtIe8ciAn07h3wQ57xX94KMCmvtLvfrPC5fcSoiIiJR\nuG4gW2t/ScTHRqy1x+Di5/9+Hy2WEBERuWFRfQ7ZGPM4zmcqH3TLFnoVDofDWVnx+MSDiIiIJ/U7\n9PodyMaYJ3E+LrLEWnuqT6PKyqK5+Wx/nyotFBYWZOzcQfPX/DN3/pk8d9D8CwsL+n2f/nwOOWyM\nyQa+BwzB6f192RjzF/1+VhEREblMn/aQrbXv4RTpg9MDLCIiIjGkpi4REREPUCCLiIh4gAJZRETE\nAxTIIiIiHqBAFhER8QAFsoiIiAcokEVERDxAgSwiIuIBCmQREREPiOriEiIiIl7T0dnF6/sa2bi1\nnkEDcnn6ibnJHlK/KJBFRCSlnTnfzubtDby8rZ6WCx1kZ2WxbF5RsofVbwpkERFJSYGmc1TVBnh9\n3zE6u8IMGpDLA3dPYtm8IkYO9SV7eP2mQBYRkZQRCofZdegEVbUB9r/vXAF47IiBLC/2c8+d4/Dl\np26spe7IRUQkY7S1d/Hq7qNsqAvQeKoVgNsnj6CsxM/Mm0eRnZWV5BHeOAWyiIh41smWIBu31lO9\n4wgX2jrJzcni3jvHU1bixz9mSLKHF1MKZBER8ZxDR85QVRug7kAzoXCYoYPy+NC9U1kyZyLDBucn\ne3hxoUAWERFP6AqF2GqbqaoLcKihBYCiwiGUlRQxf/pY8nJzkjzC+FIgi4hIUl0IdrBl51E2bg1w\noqUNgFk3j6K8xM9tk0eQlQbnh/tCgSwiaSEYDLJ69RYAKioW4fOl3sdeMk3jqQtsqK3n1d1Haevo\nIj8vm/vmTmR5sZ9xIwcle3gJp0AWkZQXDAZ5/PG11NR8AoC1a59lzZoVCmUPCofDHDh8mqraADsP\nHicMjCgYwCP3TGHR7AkM9uUle4hJo0AWkZS3evUWN4ydN/OampWsXv0SK1eWJ3dgclFHZ4g39jVS\nVRcg0HQOgJsmDKW8xM/caYXk5ujSCgpkERGJmxa31nLT9gZazreTnZVFyW1jKC/xc/PEYckenqco\nkEUk5VVULGLt2mepqVkJQGnpKioqViR3UBnuvaMtrKk8wOt7G+nsCjFwQC733z2JZXOLGDVMpxKu\nRoEsIinP5/OxZs0KVq9+CYCKCp0/ToZQOMzuQyeoqguw7z2n1nLMiIGUpUGtZSLoT0dE0oLP59M5\n4yRpa+/iN3uOUlVXz7GTFwCYectolsyawMxb0qPWMhEUyCIiEpWTLUE2bqtny44jnA86tZb33DmO\nsmI/82ZMoLn5bLKHmFIUyCIi0i/vHGmhsvbwxVrLgkF5PHLPFJbOmciwIQOSPbyUpUAWEZHr6gqF\n2PbWcapqAxxsOANAUeFgyor9zL8j/WstE0GBLCIi13Sp1rKeEy1BAGa6tZa3Z1CtZSIokEVE5AqN\npy6woc6ttWx3ai2Xzp3I8nlFjB81ONnDS0sKZBERAZxaS3v4NJU9ai0fXjCFRbMmMGRg5tZaJoIC\nWUQkw3V0hnhzfyNVtQEOu7WWU8c7tZbzjGotE0WBLCKSoVouOLWWL29r4Mz5drKyoLi71nLCUJ0f\nTjAFsohIkiTrkpH1zeeoqg1Qc7HWMocP3OVn2bwiRg8bmJAxyJUUyCIiSZDoS0aGwmH2vHOCqtoA\ne7trLYcPZHlxEffcOZ6BAxQHyaZXQEQkCRJ1yci29i5+s/cYG+oCHD3h1FreNmk4ZSV+Zt08muxs\nHZb2ij4FsjHmbuBb1tqlxphbgFVACNgD/L61Nhy/IYqISH+dOtvGxq31VO9o4Hywk5zsLO6ZMY6y\nEj+TxhYke3hyFdcNZGPM08CTwDn3R98Bvm6t3WKM+T7wIeCF+A1RRCT9xOuSke8ebaGyNkDdgSa6\nQmGGDMzj4QVTuG+uai29ri97yAeBDwPPud/PtdZucb/+f0A5CmQRkX6J5SUju0Ihtr91nMq6AAfr\nnVrLiaMHU1bip1S1linjuoFsrf2lMWZKxI8iTzicA4bFelAiIpngRi8ZeSHYySu7jrCh7vJay7IS\nP9NjUGuZrFXgmSqaRV2hiK8LgNN9uVNhYeaes8jkuYPmr/ln7vzjNfejx8/z0qvvsOHN92lt6yI/\nL4cHSqfw8MKb8Mfo/HAwGOSxx56nuvopANate47165/oVyhn8msfjWgCebsxZrG1thp4ANjYlztl\n6nUxCwsLMnbuoPlr/pk7/1jPPRwO81bAqbXc8falWssH509m8eyJF2stY/Wcq1ZVumHsPG519ZM8\n80zfV4Fn8msP0W2M9CeQu1dSfxn4kTEmH9gH/KLfzyoiIn3S2eXUWlbWBjjc2F1rWUBZiZ9iM0a1\nlmmkT4FsrX0PWOB+/TawJH5DEhGRs26t5abIWktTSFmJn1smDot7rWW8VoHLtakYRETEQxqaz1FV\n59RadnQ6tZblJX6Wzyti9PDE1VrGchW49I0CWUQkyULhMHvfPUllbYC9754EoHC4j+XFfu7tR61l\nrFdF3+gqcOkfBbKISJK0dXRRs+cYVRG1lsY/nPISP7Nu6V+tZaK7sSX2FMgiIgl26mwbm7bVs3n7\npVrLBTPGUVbsZ/K46D4qlKhubIkfBbKISIK8e7SFqroAtfsv1Vp+0K21HK5ay4ynQBaRlJGKzVGh\nUJjtbzdTWRvg7R61lvOnjyU/Lza1lloVnfoUyCKSElLtHOmFYAeVbx5mw9Z6jp9xai3vvGkUZSVF\n3DFlZMw/tqRV0alPgSySwVJpjzNVzpE2nW5lQ12A13Yfo7Wtk/zcbJbMnsDyYj8TRg+O63NrVXRq\nUyCLZKhU2+P0su5ay6q6era/3Uw4DCOH+nhw/qTLai1FeqNAFslQqbLH2c2L50g7u0LU7m+isjbA\n+41Ob/OUcQWUl/i5/96bOX3qfFLHJ6lFgSwiKcFL50jPXmhn844jbNpWz5lzTq3lPFNIWbGfW4uc\nWsu83Ph1TKfSqQbpOwWySIby4h7n9ST7HGnD8fNsqAvwmz3H6OgM4ct3ai2XzSuiMEG1ljrVkL4U\nyCIZykt7nF4Wjqi13OPWWo4e5qOs2M+9M/teaxkrqXaqQfpOgSySwZK9x+ll7R1d/GbvMapqL9Va\nTvMPp6zYz5xb+1drGXtBoNL9emESxyGxpEAWkbQQq/Oq3bWW1TuOcK61g5zsLErvGEtZiZ8p44bG\ncshRefTRu/jmN79HS8tXARg69G959NHfSfKoJBYUyCIJooU48ROL86rvHWuhqjbAm5fVWk5m6Zwi\nRhR4p9byhRfedMPYOWTd0vI0L7ygQ9bpQIEskgBaiBNf0Z5XdWotj1NVe5i33FrLCaMHU1ZcxPw7\nxjEgylrLYDDID36whbNng9r4kj5TIIskgBbieEtrWyev7DrKhrrAxVrLGTeNpLzYzx1Tb6zWMt4b\nX6m4Ol76RoEsIimvryHVfLqVjVvr2bLzCMH2LvJys1ns1lpOjFGtZbw3vrQ6Pn0pkEUSQHs18dVb\nSIXDYd6uP0NVbYBtbq3lsCH5PDh/MotnT6BgUH4yhx4VrY5PT1nhcDgRzxNubj6biOfxnMLCAjJ1\n7qD5R84/Exd1JfP17+wKUXugiaraAO8dc8YweaxTa1ly+xhyc+LTpHXpkPVKwNn4ysT1Avq3X9Dv\n8x7aQxZJEO3VxEfPDZ3OcA6btzewaVs9p8+1kwXMnVZIecmlWst46t5bX7euyl3UlXlhLNFRIIsk\nWCbuKcdL5AKqISPPUbljPQVFQy7WWpYV+1lWXMSYBNVadvP5fHzmMw9l9B6i9J8CWSSB9PGn2Pr5\nz7fw9pEPcteKOsZMbQIGkRPu4iPLprEwCbWWiaKNuvQUv8uRiMgVLl+Bm+euwN2S7GGlnPaOLqp3\nNLD1RA7zP1LLmKlNnKgfRd2v5lAyuovyEn9ah/Hjj6/l6acf4emnH+Hxx9cSDAaTPSyJgfT8Gysi\naen0uTY2bWtg8/YGzrV2kJ2dTVvzBd789TLONA2jtHQVH//4ja9e9/IeqD7Tnr4UyJIxvPAmq48/\nRef9Y2eprA3w5v5GukJhBvtyeah0MvfNLWJgXpjVd3a/rjd++F+nFSRZ9LGnONPSf2/Mv+ebbGlp\nYt5krzZ/L2wYJMqNvP6hUJgdB49TWRvgrcBpAMaPGkRZsZ/SGdHXWl7PqlWVPP30I3TvgUI73/52\n//dA4/V3P1kfq+rv31uv/NtPFn3sSeQavHSYTx9/6l1rWyev7jrKhq0Bmk8750bvmDqS8hKn1jI7\nzh9b8rpkNHXpqEFiKJAlLrq3pgsKfDz00F36hyvXdfx0Kxu21vPKriO0tjm1lotmTaCsuIiJhUMS\nNo5UOK2Q6I06L23QpjMFssRcsg4P9yYV3mQzUTgc5mDDGSprA2x761Kt5f13T2ZJkmot1RUtyaJz\nyHGWiedRYnUOLtaSce42E1//SNeaf2dXiLoDTVRG1FpOGjuE8hI/d90+Nm61lomUTq99NOet02n+\n0dA5ZJFe6Nxt8p1r7aB6RwObtjVw6mwbWcCcW0dTXuJnmn943GstJTo6apAYCmSJOR0elp6OnjhP\nVV09v9l9lPbOEAPyc1heXMTyYn/Cay0lOtqgjT8FssRc5Na0s6hLW9OZKBwOs9028fyGt9j9zgkA\nRg31sby4iIUzJzDIl/i3n0z6yJmknqj+RRhjsoF/A6YBIeB3rbU2lgOT1Na9NZ3p55EyUXtHF6/v\na6SqNkDD8fMA3FI0jPJiP3OmjSYnOznnh/XRHfG6aDdRy4HB1tp7jTHLgb8CPhq7YYlIqjnj1lq+\n7NZa5mRnsXhOEYtmjmPq+KHJHp4+uiOeF20gtwLDjDFZwDCgPXZDEpFUcrjRqbV8Y9+VtZbTbhod\n9yMkOgwt6SLaQH4N8AEHgFHAwzEbkYh4XigUZqdba2ndWstxIwdRVuJnQRxrLXvqz2FoLTYUr4s2\nkJ8GXrPW/okxpgjYZIyZYa3VnrLINaTDnlxrWyev7T7Khrp6mk63AnDHlBGUlUxixk2Jr7Xsz2Fo\nfXRHvC7aQB4MtLhfn8L519DrJnFhYUGUT5X6MnnuoPkXFhYQDAZ57LHnqa5+CoB1655j/fonUiYQ\nmk5e4KVX36Hqjfc5H+wkLzeb8rsn88jCm5h8nfPD8Xz9Cwqu/PMrKPD18pwFfOUrH4nbeHrS3/3M\nnn9/RdXUZYwZDjwLjMYJ43+w1q7u5S5q6spQmr8zf6+2l/UmHA5zqKGFytrDbO2utRycz31zJ7J4\nzkSG9qHWMt6vf7KufNQX+ruf8fNPTFOXtfY0oJMvkjLS4XBxonR2haizTVTV1vPuUedA2KQxQyhz\nay3zcr1Ta6nD0JJOVAwiac8Lnz9NhQVF51o72LLzCBu31qdUraUapCRdKJAl7Xnh86de3pM7euI8\nG+rqeW3PUdo73FrLeUUsKy5i7IhByR6eSMZQIIskiJf25MLhMPveP0VVbYBdhy7VWi67t4hFs8Yz\nyJd38bY63C+SGApkSXupcLg4UTo6u3h9byNVdQHqm91ay4nDWDJ7LLZuH8f2HyB71hi6jyZ44XC/\nSKZQIEva8/Lh4kQ5c76dl7fV8/L2Bs5ecGot754+lrJiPxNG5l8zdL1wuF8kUyiQJSN46XBxIh1u\nPEtVbYA39jfS2eXUWj44fzL3zZ3IyKHORsmqVZUKXREPUCCLpJlQ2Km1rKoNcOCwU2s5duQgyouL\nWDBjPAPy+15rqcP9IomjQBZJoHgukAq2d/La7mNU1QVoOuXUWk6fMoLyEj8zbhp1zVrL3kJXh/tF\nEkeBLNJDvEIzXgukTpwJsnFrPdU7j9Da1kluTjYLZ46nrNhP0Zgh173/9UI3Uw/3iySaAlkkQixC\nMzLQP//5hy7+PNYLpA42nKGyNsA220woHGbo4Hw+UDKVJXMmMnTw9WstIyl0RZJPgSwS4UZDs2eg\nr1v3HM8993DM9rI7u0Jse6uZytoA7xxxai39Y4ZQ7sFaSxHpHwWySAz1DPTq6icvBvqNLJA6H+xg\ny44jbIiotZx9i1NraSZ5t9ZSRPpOgSwSIZ6riqNZIHXs5AWq6gK8ttuttczLYdm8IpbPK2LsSNVa\niqSTqC6/GAVdfjFDpeL8b2RRV8/LAS5e/LN+H7IOh8Psd2std16stRzAsnn+K2otvS4VX/9YyeS5\ng+afsMsviqSzG1ng1HMv+POff4KzZzv6dN+Ozi5e39dIVW099c3nALh54lDKSyYxd9pocrJ1flgk\nnSmQRWIsMtB9Pt91A7m71nLz9gZaLnSQnZXFXbePoazEz80ThiViyCLiAQpkkSQJNJ2jsvYwb+xz\nai0HDcjlgbsnsWxe0cVaSxHJHApkkQQKhcPsOnSCqtoA+98/BTi1lmXFRdzTz1pLEUkvCmSRBOiu\ntdxQF6DRrbW8fbJTa3nnzdeutRSRzKFAFomj5lOt/NfLB9my4wgX3FrLe91aS38fai1FJHMokEXi\n4FDDGarqAtTZZkKhMEMH5fGhe6eyNIpaSxHJDApkkRjpCoXYapupqg1wyK21nDJ+KPfNmcjd08eQ\nl6vzwyJybQpkkRt0IdhB9c4jbNxaz8mWS7WWZcVFLCyexPHj55I9RBFJAQpkkSg1Xqy1PEZbRxf5\nedncN3ciZcX+i7WW6pgWkb5SIIv0Qzgc5sDh006t5cHjhIGRQwfwyL1TWDRrAoNTqNZSRLxFgSxp\n60Y6qXvq6Azxxr5GquoCBJrcWssJQykr8TPPFKrWUkRumAJZ0lLP6xKvXfssa9Zc/+pKPbWcb+fl\n7Q28vK3+8lrLYj83T1StpYjEjgJZ0lLP6xLX1Ky8eF3ivqhvOkdlXYDX9zbS2RVi4IBc7r97Esvm\nFjFqmGotRST2FMgirlA4zO5DJ6iMrLUcMZDlxX7uuXMcvnz9cxGR+NE7jKSliopFrF377MXrEpeW\nrqKiYsVVb9vW3sVre45SVVdP48kLgFNrWVbsZ+YtqrUUkcRQIEta6nld4oqKK88fn2wJsnFrPdUX\nay2zuOfOcZQV+5k0tiAZwxaRDKZAlrQVeV3iSIeOnKGqNkDdgWZC4TAFg/J45J4pLJ1bxDDVWopI\nkiiQJSN0hUJse+s4lbWHOdTg1FoWFQ6mrMTP/OljVWspIkmnQJa0diHYwZadR9m4NcCJljYAZt08\nirISP7dPHqEmLRHxDAWypKXGUxfYUFfPq7uOXqy1XOrWWo5zay1FRLxEgSxpIxwOYw+fpjKi1nJE\nwQAeuWcKC2dNYMhA1VqKiHdFHcjGmK8BD+M0L/yTtfanMRuVSD90dIZ4c38jVbUBDru1ljdNGEp5\niZ+50wrJzVGtpYh4X1SBbIxZApRaaxcYYwYDT8d0VCJ90HK+nc3bG9i0vYGW8+1kZUHxbWMoL/Fz\ni2otRSTFRLuHXA7sNsa8AAwFvhK7IYn0rr75HFW1AWoiay3vmsR98yYyetjAZA9PRCQq0QZyIeAH\nPgjcBPwKuC1WgxLpKRQOs+cdp9Zy33tOreWYEQMpU62liKSJrHA43O87GWP+Bmi21n7H/X4HsNxa\ne/wad+n/k4gAwbZONm0N8Kst79DQ7JwfnnnLaB5ZeBPF08eRk62PLYmIJ/X7zSna3YpXgS8A3zHG\nTAAGAyd6u0Nz89konyq1FRYWZMTcr3Xt4Wjnf7IlyKZtDVTvaOB80K21nDGOspJLtZYnT5yL3QTi\nJFNe/2vJ5Pln8txB8y8s7H/9blSBbK1dZ4xZZIx5E8gGPmet1V5whorVtYcB3j3aQmVtgLoDTXSF\nImot50xk2JABsR66iIhnRH3izVr71VgORFLXjV57uCsUYvtbx6msDXCw4QwAEwsHU17sZ/4dqrUU\nkcyglTByhWsdfo61C8FOtuw8wsat9ZxoCQIw0621nK5aSxHJMApkuUw0h5/7c+1hgCa31vKV3Udp\na3drLedMZHlxEeNHDY7pfEREUoUCWS4TzeHn3q49HAwGWbWqknAY5i2cRfXORna8fanW8uEFU1ik\nWksREQWyxMbVrj0cDAZ57GPPc7BxKTfNfY9XGvcCMHV8AWUlforNGNVaioi49G4ol6moWERp6bNA\nO9DuHn5e1O/HabnQzt/+2yvkTZvAnAd2MbSwhSN2HLNGdvKnv13M/OnjFMYiIhG0hyyX6e3wc1/U\nN59jQ51Ta9nRmUNOXheH6m7mve030Xo2l4rF9VqsJSJyFQpkucLVDj/3xqm1PElV7WH2dtdaDh/I\n4tnj+Ml369i/pQy4/mIvEZFMpkCWqLV1dPGbPcfYUBfg6IkLABj/cMpL/My6ZTTZ2Vl87H+m8cwz\n0e1ti4hkEgVymknEZ4hPnW1j07Z6Nm93ai1zsrNYMGMcZcV+Jo+7vC6uv3vbIiKZSoGcRmJZYXk1\n7x5toao2QK1bazlkYB4PL5jC0rkTGa5aSxGRG6JATiM3WmF5NaFQmG1vNVNZF+BgvVtrOXowZSV+\n5k8fS36eai1FRGJBgSxXdSHYyau7jrBhaz3Hz0TUWhb7mT5FtZYiIrGmQE4j/a2wvJqmUxfYsLWe\nV3cdJdjeRX5uNkvmTKQsotYyUV3XIiKZRIGcRqL9DHE4HOatwGnWv/E+Ow+dALIYPiSfh0ons3j2\nxMtqLeN9nlpEJFMpkNNMf1Y1d3aFeHN/I1W19bzf6FxI/PSx4byzbQqTR1by158qxue7vGM6Huep\nRUREgZyRzl5oZ/OOI2zaVs+Zc+1kZcHoASFe/OkCTh0ZA2RxBAWtiEgiKZAzSMPx81TVBqjZe4yO\nzhADB+RQXuJn2bwi1r3wCquOjAR6X6wVi/PUIiJyJQVymguHw+x59ySVtQH2vnsSgMLhPpbP83Pv\nzPEMHOD8Fehr0N5o17WIiFydAjkNXG3Vc1tHFzV7j1FVe3mtZVmJn9lurWWk/gSt2rdERGJPgZzi\neq56fnHVAWISAAAO+UlEQVTdT6n4zGxe29PEudYOcrKzKL1jHOUlV9Za9qSgFRFJHgVyiute9Txs\nzHmmzjvEsGlj+HVtA0MG5vHBBVNYOmciIwpUayki4nW6QnwKC4XCHA9mUfqxGhY+WU3R7fWcPzWY\nW4d28c1PzqXlnYO8+N/VBIPBZA9VRESuQ3vIKai1rZNXdh1lQ12A42dyGFV0iqZ3R/POtincOmEd\nn/3TB3jqt36l8g4RkRSiQE4hzadb2VBXzyu7jlyqtZw9gYUzx1BdWQelx6ioWKHyDhGRFKRA9rhw\nOMzb9WeorA2w/e1mwmEYNiSfB+dPZsmcS7WWUxW2IiIpTYHsUZ1dIWr3N1FZF+D9Y06t5eRxBZSX\n+Cm5bQy5Odc+/a/yDhGR1KNA9pizF9qpdmstT7u1lvOmFVJW4ufWomF9uuyhyjtERFKPAtkjjhw/\nT1VdgN/scWotffmXai0Lhw/s9+PpM8UiIqlFgZxE4XCYve+epLIuwJ53nFrL0cN8LC/2szCi1lJE\nRNKf3vGToL271rKuniPHzwMwrWgYZSWTmHPrlbWWIiKS/hTICXT6XBubttWzefuRiFrLsZSV+Jky\nbmiyhyciIkmkQE6A94+dpbL2MG/ub6IrFGawL5eHSidz39wi1VqKiAigQI6bUCjM9rePs/m/drL3\nnRMAjB81iLISP6V3jGNAXk6SRygiIl6iQI6x1rZOXt11lA1bAzSfdjqkZ0wdSXmJnzumjuzTx5ZE\nRCTzKJBj5PjpVjZsdWotW9u6yMvNZvHsCXyszDAwRyEsIiK9UyDfgO5ay6q6ANveulRref/dk1ky\newIFg/IpLCyguflssocqIiIed0OBbIwZA2wFlllr34rNkLyvsytE3YEmKmsDvNddaznWrbW8vfda\nSxERkauJOpCNMXnAD4HzsRuOt51r7aB6RwMbt7q1lsDcaYWU96PWUkRE5GpuZA/5/wLfB74Wo7F4\n1tET56mqdWot2ztDDMjPYXlxEcuL/YyJotZSRESkp6gC2RizEmi21lYaY74GpN2uYTgcZu97J6mq\nrWe3+7Gl0cN8LJ9XxL0zJzDIp9PvIiISO1nhcLjfdzLGVANh97/ZgAU+ZK1tvMZd+v8kSdLW0cXm\nrfX86pVDHHbPD0+fOpIPLbqZu2eMJ0e1liIicn39DouoAjmSMeZl4NPXWdQV9vpKY6fWsoHN2xsu\n1lqW3D6GsmI/U8dHX2vZ2yrrYDDI6tVbAOcaxul4icRMX2Wu+Wfu/DN57qD5FxYW9DuQM/646/vH\nzlJVF+CNfY0JrbUMBoM8/vhaamo+AcDatc+yZo2uWywikqluOJCttUtjMZBECoXC7Dh4nKraADZw\nGnBrLYv9lM5ITK3l6tVb3DDOA6CmZiWrV7+kaxiLiGSojNpDbm3r5NXdR9lYV0/T6VYA7oiotczW\nx5ZERCRJMiKQe9Za5uZks2jWeMqK/UwsHJKUMVVULGLt2mepqVkJQGnpKioqViRlLCIiknxpHcjn\ngx38dL1lq21yai0H53P/XZNYPGciQwflJ3VsPp+PNWtWsHr1SwBUVOj8sYhIJkvrQH7v6FnqDjQx\naewQp9bytrHk5Xqn1tLn8+mcsYiIAGkeyHdMHcl3P38vQwflqdZSREQ8La0DGZzD1CIiIl7nneO3\nIiIiGUyBLCIi4gEKZBEREQ9QIIuIiHiAAllERMQDFMgiIiIeoEAWERHxAAWyiIiIByiQRUREPECB\nLCIi4gEKZBEREQ9QIIuIiHiAAllERMQDFMgiIiIeoEAWERHxAAWyiIiIByiQRUREPECBLCIi4gEK\nZBEREQ9QIIuIiHiAAllERMQDcpM9ALkkGAyyevUWACoqFuHz+ZI8IhERSRQFskcEg0Eef3wtNTWf\nAGDt2mdZs2aFQllEJEPokLVHrF69xQ3jPCCPmpqVF/eWRUQk/SmQRUREPECB7BEVFYsoLX0WaAfa\nKS1dRUXFomQPS0REEkTnkD3C5/OxZs0KVq9+CYCKCp0/FhHJJApkD/H5fKxcWZ7sYYiISBLokLWI\niIgHKJBFREQ8IKpD1saYPOAnwGRgAPBNa+1LsRxYulL5h4iIXE2055B/C2i21j5ljBkB7AAUyNeh\n8g8REbmWaA9ZPw/8ecRjdMZmOOlN5R8iInItUe0hW2vPAxhjCnDC+U9iOSgREZFMkxUOh6O6ozHG\nD/wS+Gdr7arr3Dy6J0kzwWCQ++//T6qrnwRg8eKfsX79EzpkLSKSfrL6fYdoAtkYMxbYDHzOWvty\nH+4Sbm4+2+/nSQeFhQVEzj3TFnX1nH+m0fwzd/6ZPHfQ/AsLC/odyNEu6vo6MAz4c2NM97nkB6y1\nwSgfL2Oo/ENERK4m2nPIXwC+EOOxiIiIZCwVg4iIiHiAAllERMQDFMgiIiIeoEAWERHxAAWyiIiI\nByiQRUREPECBLCIi4gEKZBEREQ9QIIuIiHiAAllERMQDFMgiIiIeoEAWERHxAAWyiIiIByiQRURE\nPECBLCIi4gEKZBEREQ9QIIuIiHiAAllERMQDFMgiIiIeoEAWERHxAAWyiIiIByiQRUREPECBLCIi\n4gEKZBEREQ9QIIuIiHiAAllERMQDFMgiIiIeoEAWERHxAAWyiIiIByiQRUREPECBLCIi4gEKZBER\nEQ9QIIuIiHiAAllERMQDFMgiIiIeoEAWERHxgNxo7mSMyQb+BZgJtAGfstYeiuXAREREMkm0e8iP\nAvnW2gXAHwN/H7shiYiIZJ5oA/keYD2AtfYNoDhmIxIREclA0QbyUKAl4vsu9zC2uILBIKtWVfKD\nH6wjGAwmezgiIuJxUZ1Dxgnjgojvs621od7uUFhY0Nuv00owGOSxx56nuvopABYvfo7165/A5/Ml\neWTJkUmv/dVo/pk7/0yeO2j+/RVtIL8GPAw8b4yZD+y63h2am89G+VSpZ9WqSjeM8wCorn6SZ555\niZUry5M7sCQoLCzIqNe+J80/c+efyXMHzT+ajZFoA3ktUGaMec39/hNRPo6IiIgQZSBba8PAZ2M8\nlrRRUbGItWufpaZmJQClpauoqFiR3EGJiIinRbuHLL3w+XysWbOC1atfoqDAx0MPrcjY88ciItI3\nCuQ48fl8rFxZnvHnUUREpG/0USUREREPUCCLiIh4gAJZRETEAxTIIiIiHqBAFhER8QAFsoiIiAco\nkEVERDxAgSwiIuIBCmQREREPUCCLiIh4gAJZRETEAxTIIiIiHqBAFhER8QAFsoiIiAcokEVERDxA\ngSwiIuIBCmQREREPUCCLiIh4gAJZRETEAxTIIiIiHqBAFhER8QAFsoiIiAcokEVERDxAgSwiIuIB\nCmQREREPUCCLiIh4gAJZRETEAxTIIiIiHqBAFhER8QAFsoiIiAcokEVERDxAgSwiIuIBCmQREREP\nUCCLiIh4QG5/72CMGQb8DCgA8oEvWWtfj/XAREREMkk0e8hfBKqstUuAlcA/x3JAIiIimajfe8jA\nd4E29+s8oDV2wxEREclMvQayMeaTwB/2+PFKa+1WY8w44DngC/EanIiISKbICofD/b6TMeZO4OfA\nl621v475qERERDJMvwPZGDMd+CXwmLV2d1xGJSIikmGiCeQXgJnA++6PTltrV8R6YCIiIpkkqkPW\nIiIiElsqBhEREfEABbKIiIgHKJBFREQ8IJpikF4ZYwbiVGsWAmeB37HWHu9xmy8Cj7vf/o+19i9j\nPY5EM8ZkA/+Cs+CtDfiUtfZQxO8fBv4M6AR+Yq39t6QMNE76MP+P43xmvRPYDXzOWpsWCxiuN/eI\n2/0rcMJa+7UEDzGu+vDalwB/D2QBDcBvW2vbkzHWeOjD/FcAXwfCOP/2f5CUgcaRMeZu4FvW2qU9\nfp7W73vdepl/v9734rGH/Flgp7V2EfDvwJ/2GOBNwBNAqbV2PlDufq451T0K5FtrFwB/jPMGBIAx\nJg/4DlAGLAZ+zxgzJimjjJ/e5j8Q+AawxFp7LzAM+GBSRhkf15x7N2PMp4EZOG/K6aa31z4L+Fec\nQqGFwEZgalJGGT/Xe/27/+3fA3zZvR5A2jDGPA38CBjQ4+eZ8L7X2/z7/b4Xj0C+B1jvfr0eWN7j\n94eBD0RsJaRL/ebFeVtr3wCKI353O3DQWnvGWtsBvAosSvwQ46q3+QdxNsCC7ve5pMdr3q23uWOM\nWQDcBfwQZy8x3fQ2/2nACeBLxpjNwHBrrU34COOr19cf6ACGAwNxXv902yg7CHyYK/9uZ8L7Hlx7\n/v1+37uhQDbGfNIYszvyP5ytgBb3Jmfd7y+y1nZaa08aY7KMMX8HbLPWHryRcXjEUC7NG6DLPZTV\n/bszEb+74s8lDVxz/tbasLW2GcAY83lgsLV2QxLGGC/XnLsxZjzw58AfkJ5hDL3/3R8NLACewdk4\nX2aMWUp66W3+4OwxbwX2AC9ZayNvm/Kstb/EOSTbUya8711z/tG8793QOWRr7Y+BH0f+zBjz3ziX\nZsT9/+me9zPG+ICf4LxYn7uRMXhIC5fmDZBtrQ25X5/p8bsC4FSiBpYgvc2/+zzbt4FbgI8keGzx\n1tvcP4oTSv8DjAMGGWP2W2v/PcFjjKfe5n8CZy/JAhhj1uPsQb6c2CHG1TXnb4yZhLMxNhm4APzM\nGPNRa+0vEj/MhMuE971e9fd9Lx6HrF8DHnS/fgDYEvlL95zSi8AOa+1n02VhDxHzNsbMB3ZF/O4A\ncKsxZoQxJh/nsE1N4ocYV73NH5zDtQOAFRGHcNLFNedurX3GWlvsLvb4FvCfaRbG0Ptr/w4wxBhz\ns/v9Qpw9xXTS2/x9QBfQ5oZ0E87h60yQCe9719Ov972YN3W5J7J/CozHWXH4hLW2yV1ZfRDIwbkw\nRQ2XDuF9zVr7ekwHkmDuhkb3SkuATwDzgCHW2h8ZYz6Ic+gyG/ixtfb7yRlpfPQ2f6DO/S9y4+x7\n1toXEjrIOLneax9xu98BjLX264kfZfz04e9+98ZIFvCatfaLyRlpfPRh/l/EWcgaxHkP/F1r7dUO\n8aYsY8wUnI3NBe7K4ox43+t2tfkTxfueqjNFREQ8QMUgIiIiHqBAFhER8QAFsoiIiAcokEVERDxA\ngSwiIuIBCmQREREPUCCLiIh4gAJZRETEA/4/auAkgEsEfR4AAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1096035c0>"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We have fit a straight line to the data, but clearly this model is not a good choice.  We say that this model is **biased**, or that it **under-fits** the data.\n",
      "\n",
      "Let's try to improve this by creating a more complicated model.  We can do this by adding degrees of freedom, and computing a polynomial regression over the inputs. Scikit-learn makes this easy with the ``PolynomialFeatures`` preprocessor, which can be pipelined with a linear regression.\n",
      "\n",
      "Let's make a convenience routine to do this:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.preprocessing import PolynomialFeatures\n",
      "from sklearn.linear_model import LinearRegression\n",
      "from sklearn.pipeline import make_pipeline\n",
      "\n",
      "def PolynomialRegression(degree=2, **kwargs):\n",
      "    return make_pipeline(PolynomialFeatures(degree),\n",
      "                         LinearRegression(**kwargs))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 19
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now we'll use this to fit a quadratic curve to the data."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "model = PolynomialRegression(2)\n",
      "model.fit(X, y)\n",
      "y_test = model.predict(X_test)\n",
      "\n",
      "plt.scatter(X.ravel(), y)\n",
      "plt.plot(X_test.ravel(), y_test)\n",
      "plt.title(\"mean squared error: {0:.3g}\".format(mean_squared_error(model.predict(X), y)));"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x109451b00>"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This reduces the mean squared error, and makes a much better fit.  What happens if we use an even higher-degree polynomial?"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "model = PolynomialRegression(30)\n",
      "model.fit(X, y)\n",
      "y_test = model.predict(X_test)\n",
      "\n",
      "plt.scatter(X.ravel(), y)\n",
      "plt.plot(X_test.ravel(), y_test)\n",
      "plt.title(\"mean squared error: {0:.3g}\".format(mean_squared_error(model.predict(X), y)))\n",
      "plt.ylim(-4, 14);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nrkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1093c27b8>"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "When we increase the degree to this extent, it's clear that the resulting fit is no longer reflecting the true underlying distribution, but is more sensitive to the noise in the training data. For this reason, we call it a **high-variance model**, and we say that it **over-fits** the data."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Just for fun, let's use IPython's interact capability (only in IPython 2.0+) to explore this interactively:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.html.widgets import interact\n",
      "\n",
      "def plot_fit(degree=1, Npts=50):\n",
      "    X, y = make_data(Npts, error=1)\n",
      "    X_test = np.linspace(-0.1, 1.1, 500)[:, None]\n",
      "    \n",
      "    model = PolynomialRegression(degree=degree)\n",
      "    model.fit(X, y)\n",
      "    y_test = model.predict(X_test)\n",
      "\n",
      "    plt.scatter(X.ravel(), y)\n",
      "    plt.plot(X_test.ravel(), y_test)\n",
      "    plt.ylim(-4, 14)\n",
      "    plt.title(\"mean squared error: {0:.2f}\".format(mean_squared_error(model.predict(X), y)))\n",
      "    \n",
      "interact(plot_fit, degree=[1, 30], Npts=[2, 100]);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x109ee9e48>"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### Detecting Over-fitting with Validation Curves\n",
      "\n",
      "Clearly, computing the error on the training data is not enough (we saw this previously). As above, we can use **cross-validation** to get a better handle on how the model fit is working.\n",
      "\n",
      "Let's do this here, again using the ``validation_curve`` utility. To make things more clear, we'll use a slightly larger dataset:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "X, y = make_data(120, error=1.0)\n",
      "plt.scatter(X, y);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x109edfba8>"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.learning_curve import validation_curve\n",
      "\n",
      "def rms_error(model, X, y):\n",
      "    y_pred = model.predict(X)\n",
      "    return np.sqrt(np.mean((y - y_pred) ** 2))\n",
      "\n",
      "degree = np.arange(0, 18)\n",
      "val_train, val_test = validation_curve(PolynomialRegression(), X, y,\n",
      "                                       'polynomialfeatures__degree', degree, cv=7,\n",
      "                                       scoring=rms_error)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 24
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now let's plot the validation curves:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def plot_with_err(x, data, **kwargs):\n",
      "    mu, std = data.mean(1), data.std(1)\n",
      "    lines = plt.plot(x, mu, '-', **kwargs)\n",
      "    plt.fill_between(x, mu - std, mu + std, edgecolor='none',\n",
      "                     facecolor=lines[0].get_color(), alpha=0.2)\n",
      "\n",
      "plot_with_err(degree, val_train, label='training scores')\n",
      "plot_with_err(degree, val_test, label='validation scores')\n",
      "plt.xlabel('degree'); plt.ylabel('rms error')\n",
      "plt.legend();"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10a3f2518>"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Notice the trend here, which is common for this type of plot.\n",
      "\n",
      "1. For a small model complexity, the training error and validation error are very similar. This indicates that the model is **under-fitting** the data: it doesn't have enough complexity to represent the data. Another way of putting it is that this is a **high-bias** model.\n",
      "\n",
      "2. As the model complexity grows, the training and validation scores diverge. This indicates that the model is **over-fitting** the data: it has so much flexibility, that it fits the noise rather than the underlying trend. Another way of putting it is that this is a **high-variance** model.\n",
      "\n",
      "3. Note that the training score (nearly) always improves with model complexity. This is because a more complicated model can fit the noise better, so the model improves. The validation data generally has a sweet spot, which here is around 5 terms.\n",
      "\n",
      "Here's our best-fit model according to the cross-validation:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "model = PolynomialRegression(4).fit(X, y)\n",
      "plt.scatter(X, y)\n",
      "plt.plot(X_test, model.predict(X_test));"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n8P8BlC629/W125QAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10a2f5ba8>"
       ]
      }
     ],
     "prompt_number": 26
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### Detecting Data Sufficiency with Learning Curves\n",
      "\n",
      "As you might guess, the exact turning-point of the tradeoff between bias and variance is highly dependent on the number of training points used.  Here we'll illustrate the use of *learning curves*, which display this property.\n",
      "\n",
      "The idea is to plot the mean-squared-error for the training and test set as a function of *Number of Training Points*"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.learning_curve import learning_curve\n",
      "\n",
      "def plot_learning_curve(degree=3):\n",
      "    train_sizes = np.linspace(0.05, 1, 20)\n",
      "    N_train, val_train, val_test = learning_curve(PolynomialRegression(degree),\n",
      "                                                  X, y, train_sizes, cv=5,\n",
      "                                                  scoring=rms_error)\n",
      "    plot_with_err(N_train, val_train, label='training scores')\n",
      "    plot_with_err(N_train, val_test, label='validation scores')\n",
      "    plt.xlabel('Training Set Size'); plt.ylabel('rms error')\n",
      "    plt.ylim(0, 3)\n",
      "    plt.xlim(5, 80)\n",
      "    plt.legend()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 27
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's see what the learning curves look like for a linear model:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(1)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n7rvv4oMffB+e5/Ge97yfU075Le677x4+8IH3UCwWOeecV3PEERtmve/pp5/Bfffdw4c+9CdksxnO\nOONsUqkUhx12GB/60PtIpboYGhrmqKOOrsePcp8YzewmWIx7nnxsSQsaj8RZmRrqyLl7O+V4O+lY\nobOOt5OOFTrreOce6403/oBXverV9PX1cdVV3yAajfLud7+viSWsr6Gh9J67L+ZQS30B6oIXEWl9\nK1as4GMf+xDJZIru7m4uvvivml2kplKoL6TUBQ99zS6JiIgs4KyzzuGss85pdjFahi6U2wNNxyoi\nIsuJQn0P8n4BV13wIiKyTCjU9ySA6cJ0s0shIiJSE4X6XkwX1AUvIiLLg0J9L3JuQVfBi4g0wIc/\nfAHPPLN1wZnazj//bXt8/S9/+XN27NjBzp2j/N3f/X+NKuayoqvf9yrQQDQisizduPlm7tte39HN\nThg+hjev3/PMaotj7HWmtoXccMP3OeSQQzj44HV8/OMX1rFMy5dCvQbTxYxCXUSkBhdf/Je85S1v\n5/jjT2TTpke57rqrueSSz3H55X/N9PQUO3aM8OY3v4U3vvH3S68IKjO1veENb+YLX/gbnnzyCYaH\nVzI9HV7T9NRTm/nqV/8ez/OZnp7gox/9JBMTEzzxxONcdtlnueSSz3HZZZ/hm9/8//nNb+7gqqv+\nkVgsRm9vLxdd9Bkef3wT11//7d1mgKv2zW9+jfvvvwfX9TjrrFfxjne8i0ceeZgrrvgSvu8zNDTE\npZdextNPb+Hv//6LmKZJLBbnwgsvxvd9LrzwL+jt7eO3fusVnHLKaXzlK18kCIJSGS6lUCjymc9c\nRBAEFAoFPvGJiypj2deTQr0GBa+A67tETP24RGT5ePP68+rcqt6717/+Tfz4xzdz/PEncsstN/G7\nv/smnnvuWc499zWceebZ7Ngxwp/92QVVoT4zDOutt/6cfD7HlVdey65du/iDPwjnZN+yZQt/9mcf\n5dBD13Pnnb/klltu4sILL+bww4/gL//y00QiM5/NX/jC5XzjG1czODjID37wfa677mpOO+30eWeA\nq/azn/2UK664koGBAf7jP24C4G//9m/43Of+hoMPXsctt/w7Tz+9hS984W/41KcuYf36w7n99l9y\nxRVf5s/+7KPs3LmTa665nkgkwvvf/24uvvizrF27jptv/jeuv/7bHHPMsfT29vG///dfsXXrFnK5\n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\n9Om8HwzDoDsZpTsZxfV8JjNFprNF3DYZX940DJLxcpBbGLpqXUSkpSnU6yRimfSn4/Sn42Tz4bn3\n5ZKOTukAAAzbSURBVHhxnWGE0512JcMWuW4/ExFZPhTqDZCMR0jGI/h+wFS22PIX14X3klt0JaMc\nfEAvO0enml0kERHZBwr1BjJNo2UvrjMwiEVNupLhleuWGd5LbplqmYuILFcK9SWyvxfXGRiUe8JN\no/TYMDCN8Nx+abHqsTGzbLDbukTMaulBYUREZPEU6kts7sV1haJfCtr5Ajl8rPPaIiJSC4V6E0Us\nU61lERGpGyWKiIhIm1Coi4iItAmFuoiISJtQqIuIiLQJhbqIiEibUKiLiIi0CYW6iIhIm1Coi4iI\ntAmFuoiISJtQqIuIiLQJhbqIiEibUKiLiIi0CYW6iIhIm1Coi4iItAmFuoiISJtQqIuIiLQJhbqI\niEibUKiLiIi0CYW6iIhIm1Coi4iItAmFuoiISJtQqIuIiLQJhbqIiEibUKiLiIi0CYW6iIhIm1Co\ni4iItAmFuoiISJtQqIuIiLQJhbqIiEibUKiLiIi0CYW6iIhIm1Coi4iItAmFuoiISJtQqIuIiLQJ\nhbqIiEibUKiLiIi0iUijdmzbtgl8HTgWyAPvcxznyartfwG8FxgprbrAcZzHG1UeERGRdtewUAfe\nCMQcxznNtu1TgL8rrSs7EXin4zj3NbAMIiIiHaOR3e+vAH4C4DjOncBJc7ZvBD5t2/Zttm1/qoHl\nEBER6QiNDPUeYKJq2St1yZd9D7gAeBVwum3bv9PAsoiIiLS9Rna/TwDpqmXTcRy/avkrjuNMANi2\nfQtwAnDLQjvr708RiVgNKejeDA2l9/6kNtJJx9tJxwqddbyddKzQWcfbSce6WI0M9V8Brwd+YNv2\nqcCD5Q22bfcCD9q2fRSQIWytX72nnY2NZRpY1IUNDaUZGZlsyns3QycdbycdK3TW8XbSsUJnHW8n\nHSssvgLTyFD/IfBq27Z/VVr+Y9u23w50O45zVek8+s8Jr4z/meM4P2lgWURERNpew0LdcZwA+NM5\nqx+v2v49wvPqIiIiUgcafEZERKRNKNRFRETahEJdRESkTSjURURE2oRCXUREpE0o1EVERNqEQl1E\nRKRNKNRFRETahEJdRESkTSjURURE2oRCXUREpE0o1EVERNqEQl1ERKRNKNRFRETahEJdRESkTSjU\nRURE2oRCXUREpE0o1EVERNqEQl1ERKRNKNRFRETahEJdRESkTSjURURE2oRCXUREpE0o1EVERNqE\nQl1ERKRNKNRFRETahEJdRESkTSjURURE2oRCXUREpE0o1EVERNqEQl1ERKRNKNRFRETahEJdRESk\nTSjURURE2oRCXUREpE0o1EVERNqEQl1ERKRNKNRFRETahEJdRESkTSjURURE2oRCXUREpE0o1EVE\nRNqEQl1ERKRNRBq1Y9u2TeDrwLFAHnif4zhPVm1/PXAJ4ALXOI7zrUaVRUREpBM0sqX+RiDmOM5p\nwKeAvytvsG07CnwJeDVwJvB+27aHG1gWERGRttfIUH8F8BMAx3HuBE6q2nYksNlxnHHHcYrA7cAZ\nDSyLiIhI22tkqPcAE1XLXqlLvrxtvGrbJNDbwLKIiIi0vYadUycM9HTVsuk4jl96PD5nWxoY29PO\nhobSRn2LV7uhofTen9RGOul4O+lYobOOt5OOFTrreDvpWBerkS31XwGvA7Bt+1Tgwaptm4DDbdvu\nt207Rtj1/usGlkVERKTtGUEQNGTHtm0bzFz9DvDHwEag23Gcq2zbPg+4lLBicbXjON9oSEFEREQ6\nRMNCXURERJaWBp8RERFpEwp1ERGRNqFQFxERaRMKdRERkTbRyPvUlyXbtk8B/o/jOGfbtr0euBbw\ngYeBDzmO0zZXFpaG670GWAvEgcuAx2jDY7Zt2wKuAo4AAuADhHMSXEubHWtZaejle4BzCI/xWtr3\nWO9lZkCrp/5fe3cc61VZx3H8jaKiZCSt0TJGOevTlCKBZrcMsCHapnNjuWZMhVy1WYSOBsKw0ha2\nmCFMligRsFlzGkNdojQgTVMURWtlH4TNWps1qFiTSPBy++P7/ORw+Xnx6ti9Pvf72u7u75zfOef3\nfO/v3PM95znPeR7gZuqOdx5wCXACcBvxCPEqKotX0lXA9DJ5MjAGOA9YQmWxwutjpqwgjlMHga8C\nnfTiu80r9QZJc4gD/0ll1o+B+bYnAIOAS/uqbMfINGBXie8iYBnRR3+NMV8MHLR9HrAAWEi9sbZO\n2JYDe4nYqt2XJQ0BsH1++bmauuOdBHSUcTUmAWdQ6b5se3XrewW2AjOJR6Gri7WYAgwtx6mbeAvH\nqUzqh9sBTCX+cABjbT9aXq8HJvdJqY6de4h/EIh94QCVxmz7PuDrZfJDRA+G42qMtVgE/AR4uUxX\n+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\nXw0AAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10a42d400>"
       ]
      }
     ],
     "prompt_number": 28
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This shows a typical learning curve: for very few training points, there is a large separation between the training and test error, which indicates **over-fitting**.  Given the same model, for a large number of training points, the training and testing errors converge, which indicates potential **under-fitting**.\n",
      "\n",
      "As you add more data points, the training error will never increase, and the testing error will never decrease (why do you think this is?)\n",
      "\n",
      "It is easy to see that, in this plot, if you'd like to reduce the MSE down to the nominal value of 1.0 (which is the magnitude of the scatter we put in when constructing the data), then adding more samples will *never* get you there.  For $d=1$, the two curves have converged and cannot move lower. What about for a larger value of $d$?"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(3)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nf201zryiO+G+AAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10a51a9b0>"
       ]
      }
     ],
     "prompt_number": 29
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Here we see that by adding more model complexity, we've managed to lower the level of convergence to an rms error of 1.0!\n",
      "\n",
      "What if we get even more complex?"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(10)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\ngg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x109465e48>"
       ]
      }
     ],
     "prompt_number": 30
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "For an even more complex model, we still converge, but the convergence only happens for *large* amounts of training data.\n",
      "\n",
      "So we see the following:\n",
      "\n",
      "- you can **cause the lines to converge** by adding more points or by simplifying the model.\n",
      "- you can **bring the convergence error down** only by increasing the complexity of the model.\n",
      "\n",
      "Thus these curves can give you hints about how you might improve a sub-optimal model. If the curves are already close together, you need more model complexity. If the curves are far apart, you might also improve the model by adding more data.\n",
      "\n",
      "To make this more concrete, imagine some telescope data in which the results are not robust enough.  You must think about whether to spend your valuable telescope time observing *more objects* to get a larger training set, or *more attributes of each object* in order to improve the model.  The answer to this question has real consequences, and can be addressed using these metrics."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Summary\n",
      "\n",
      "We've gone over several useful tools for model validation\n",
      "\n",
      "- The **Training Score** shows how well a model fits the data it was trained on. This is not a good indication of model effectiveness\n",
      "- The **Validation Score** shows how well a model fits hold-out data. The most effective method is some form of cross-validation, where multiple hold-out sets are used.\n",
      "- **Validation Curves** are a plot of validation score and training score as a function of **model complexity**:\n",
      "  + when the two curves are close, it indicates *underfitting*\n",
      "  + when the two curves are separated, it indicates *overfitting*\n",
      "  + the \"sweet spot\" is in the middle\n",
      "- **Learning Curves** are a plot of the validation score and training score as a function of **Number of training samples**\n",
      "  + when the curves are close, it indicates *underfitting*, and adding more data will not generally improve the estimator.\n",
      "  + when the curves are far apart, it indicates *overfitting*, and adding more data may increase the effectiveness of the model.\n",
      "  \n",
      "These tools are powerful means of evaluating your model on your data."
     ]
    }
   ],
   "metadata": {}
  }
 ]
}